`ifndef RAL_GJM_SYS
`define RAL_GJM_SYS

import uvm_pkg::*;

class ral_reg_Gjm_sys_global_cfg_status_cfg extends uvm_reg;
	rand uvm_reg_field intp_cfg;
	rand uvm_reg_field rsvd;

	function new(string name = "Gjm_sys_global_cfg_status_cfg");
		super.new(name, 32,build_coverage(UVM_NO_COVERAGE));
	endfunction: new
   virtual function void build();
      this.intp_cfg = uvm_reg_field::type_id::create("intp_cfg",,get_full_name());
      this.intp_cfg.configure(this, 4, 0, "RW", 1, 4'h8, 1, 0, 0);
      this.rsvd = uvm_reg_field::type_id::create("rsvd",,get_full_name());
      this.rsvd.configure(this, 28, 4, "RW", 1, 28'h1234567, 1, 0, 0);
   endfunction: build

	`uvm_object_utils(ral_reg_Gjm_sys_global_cfg_status_cfg)

endclass : ral_reg_Gjm_sys_global_cfg_status_cfg


class ral_block_Gjm_sys_global_cfg extends uvm_reg_block;
	rand ral_reg_Gjm_sys_global_cfg_status_cfg status_cfg;
	rand uvm_reg_field status_cfg_intp_cfg;
	rand uvm_reg_field intp_cfg;
	rand uvm_reg_field status_cfg_rsvd;
	rand uvm_reg_field rsvd;

	function new(string name = "Gjm_sys_global_cfg");
		super.new(name, build_coverage(UVM_NO_COVERAGE));
	endfunction: new

   virtual function void build();
      this.default_map = create_map("", 0, 4, UVM_LITTLE_ENDIAN, 0);
      this.status_cfg = ral_reg_Gjm_sys_global_cfg_status_cfg::type_id::create("status_cfg",,get_full_name());
      this.status_cfg.configure(this, null, "");
      this.status_cfg.build();
      this.default_map.add_reg(this.status_cfg, `UVM_REG_ADDR_WIDTH'h4, "RW", 0);
		this.status_cfg_intp_cfg = this.status_cfg.intp_cfg;
		this.intp_cfg = this.status_cfg.intp_cfg;
		this.status_cfg_rsvd = this.status_cfg.rsvd;
		this.rsvd = this.status_cfg.rsvd;
   endfunction : build

	`uvm_object_utils(ral_block_Gjm_sys_global_cfg)

endclass : ral_block_Gjm_sys_global_cfg


class ral_sys_Gjm_sys extends uvm_reg_block;

   rand ral_block_Gjm_sys_global_cfg global_cfg;

	function new(string name = "Gjm_sys");
		super.new(name);
	endfunction: new

	function void build();
      this.default_map = create_map("", 0, 4, UVM_LITTLE_ENDIAN, 0);
      this.global_cfg = ral_block_Gjm_sys_global_cfg::type_id::create("global_cfg",,get_full_name());
      this.global_cfg.configure(this, "");
      this.global_cfg.build();
      this.default_map.add_submap(this.global_cfg.default_map, `UVM_REG_ADDR_WIDTH'h100);
	endfunction : build

	`uvm_object_utils(ral_sys_Gjm_sys)
endclass : ral_sys_Gjm_sys



`endif
